/**
 * 通知相关API接口
 *
 * 使用示例：
 * import { getGroupedNotifications, markGroupAsRead } from '@/api/notification'
 */

import request from "@/utils/request";

/**
 * 获取聚合通知列表（推荐使用）
 * @param {Object} params - 查询参数
 * @param {Number} params.current - 当前页码，默认1
 * @param {Number} params.size - 每页数量，默认20
 * @param {String} params.type - 通知类型筛选 (LIKE/COMMENT/FOLLOW/SYSTEM)
 * @param {Number} params.isRead - 已读状态 (0=未读, 1=已读)
 * @returns {Promise}
 */
export function getGroupedNotifications(params) {
  return request({
    url: "/api/notifications/grouped",
    method: "get",
    params
  });
}

/**
 * 获取分组通知的详细列表
 * @param {Object} params
 * @param {String} params.type - 通知类型
 * @param {String} params.targetType - 目标类型 (article/comment/user)
 * @param {Number} params.targetId - 目标ID
 * @returns {Promise}
 */
export function getGroupDetails(params) {
  return request({
    url: "/api/notifications/grouped/details",
    method: "get",
    params
  });
}

/**
 * 标记分组通知为已读
 * @param {Object} data
 * @param {String} data.type - 通知类型
 * @param {String} data.targetType - 目标类型
 * @param {Number} data.targetId - 目标ID
 * @returns {Promise}
 */
export function markGroupAsRead(data) {
  return request({
    url: "/api/notifications/grouped/read",
    method: "put",
    data
  });
}

/**
 * 获取普通通知列表
 * @param {Object} params - 查询参数
 * @param {Number} params.current - 当前页码
 * @param {Number} params.size - 每页数量
 * @param {String} params.type - 通知类型筛选
 * @param {Number} params.isRead - 已读状态
 * @returns {Promise}
 */
export function getNotificationList(params) {
  return request({
    url: "/api/notifications/list",
    method: "get",
    params
  });
}

/**
 * 获取通知详情
 * @param {Number} id - 通知ID
 * @returns {Promise}
 */
export function getNotificationDetail(id) {
  return request({
    url: `/api/notifications/${id}`,
    method: "get"
  });
}

/**
 * 标记单条通知为已读
 * @param {Number} id - 通知ID
 * @returns {Promise}
 */
export function markAsRead(id) {
  return request({
    url: `/api/notifications/${id}/read`,
    method: "put"
  });
}

/**
 * 批量标记通知为已读
 * @param {Array<Number>} ids - 通知ID数组
 * @returns {Promise}
 */
export function batchMarkAsRead(ids) {
  return request({
    url: "/api/notifications/batch/read",
    method: "put",
    data: { ids }
  });
}

/**
 * 全部标记为已读
 * @returns {Promise}
 */
export function markAllAsRead() {
  return request({
    url: "/api/notifications/all/read",
    method: "put"
  });
}

/**
 * 删除通知
 * @param {Number} id - 通知ID
 * @returns {Promise}
 */
export function deleteNotification(id) {
  return request({
    url: `/api/notifications/${id}`,
    method: "delete"
  });
}

/**
 * 批量删除通知
 * @param {Array<Number>} ids - 通知ID数组
 * @returns {Promise}
 */
export function batchDeleteNotifications(ids) {
  return request({
    url: "/api/notifications/batch",
    method: "delete",
    data: { ids }
  });
}

/**
 * 获取通知统计信息
 * @returns {Promise}
 */
export function getNotificationStats() {
  return request({
    url: "/api/notifications/stats",
    method: "get"
  });
}

/**
 * 获取最新通知列表（用于顶部通知图标）
 * @param {Number} limit - 数量限制，默认10
 * @returns {Promise}
 */
export function getLatestNotifications(limit = 10) {
  return request({
    url: "/api/notifications/latest",
    method: "get",
    params: { limit }
  });
}
